<%-- 
    Document   : shopping-cart-processing
    Created on : Aug 25, 2011, 8:04:03 PM
    Author     : Administrator
--%>

<%@page import="pojo.DonDatHangPOJO"%>
<%@page import="dao.DonDatHangDAO"%>
<%@page import="java.sql.Timestamp"%>
<%@page import="java.util.Date"%>
<%@page import="pojo.KhachHangPOJO"%>
<%@page import="dao.GiayDAO"%>
<%@page import="dao.ChiTietDonDatHangDAO"%>
<%@page import="pojo.ChiTietDonDatHangPOJO"%>
<%@page import="pojo.GiayPOJO"%>
<%@page import="java.util.ArrayList"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<% 
    //<editor-fold desc="1.Lấy giỏ hàng">

        //======================================================================
        //XỬ LÝ CHUNG CHO CẢ 2 PHẦN GIỎ HÀNG MỚI MUA VÀ GIỎ HÀNG CẬP NHẬT SAU KHI MUA
        //======================================================================
        //Kiểm tra nếu người dùng chưa đăng nhập thì không cho mua hàng.
        if (session.getAttribute("KhachHang") == null){
            String url = request.getContextPath()+"/client/danh-muc-giay.jsp";
            response.sendRedirect(url);
            return;
        }            
        
        //======================================================================
        //XỬ LÝ CHO PHẦN GIỎ HÀNG MỚI MUA
        //======================================================================

        //Khai báo session giỏ hàng.
        ArrayList<GiayPOJO> gioHang = null;
        if (session.getAttribute("GioHang")==null){
            gioHang = new ArrayList<GiayPOJO>();
            session.setAttribute("GioHang", gioHang);
        }else{
            gioHang = (ArrayList<GiayPOJO>)session.getAttribute("GioHang");
        }       
        
        // <editor-fold desc="2.Thêm sách vào giỏ">
        String action = request.getParameter("action");
        if (action!=null && action.equals("Them")){            
            String s = request.getParameter("MaGiay");
            int maGiay = 0;
            if (s != null){
                maGiay = Integer.parseInt(s);
            }
            boolean kq = false;
            for (int i=0; i<gioHang.size(); i++){
                GiayPOJO giay = gioHang.get(i);
                if (giay.getMaGiay()==maGiay){
                    giay.setSoLuong(giay.getSoLuong() + 1);
                    kq = true;
                    break;
                }
            }
            if (kq == false){
                GiayPOJO giay = new GiayPOJO();
                giay = GiayDAO.layThongTinGiay(maGiay);
                giay.setSoLuong(1);
                gioHang.add(giay);
            }
        }
        // </editor-fold>

        // <editor-fold desc="2.Cập nhật giỏ hàng">
        if (request.getParameter("btCapNhat") != null){            
            for (int i=0; i<gioHang.size(); i++){
                String s = request.getParameter("tfSoLuong"+i);
                GiayPOJO giay = gioHang.get(i);
                if (s != null){
                    int soLuong = Integer.parseInt(s);
                    giay.setSoLuong(soLuong);
                }
            }
        }
        // </editor-fold>

        // <editor-fold desc="3.Xóa giày khỏi giỏ hàng">
        if (request.getParameter("btXoa") != null){
            //Nếu người dùng nhấn xóa
            //Form sẽ gởi lên server các mã giày xóa
            //Giá trị này nằm trong phần value của checkbox cbXoa.
            String[] s = request.getParameterValues("cbXoa");
            if (s != null){
                //Chuyển kiểu chuỗi thành kiểu số int.
                int[] cacMaGiayXoa = new int[s.length];
                for (int i=0; i<s.length; i++){
                    cacMaGiayXoa[i] = Integer.parseInt(s[i]);
                    //out.println(cacMaGiayXoa[i]);
                }                
                for (int i=0; i<cacMaGiayXoa.length; i++){
                    //Lấy một mã giày cần xóa ra.
                    int maGiay = cacMaGiayXoa[i];
                    //Tìm xem mã giày đã có trong danh mục các mã giày đã mua không.
                    for (int j=0; j<gioHang.size(); j++){
                        GiayPOJO giay = gioHang.get(j);
                        if (giay.getMaGiay() == maGiay){ //Nếu có
                            gioHang.remove(j); //Xóa sách j khỏi giỏ hàng.
                        }
                    }
                }
            }else{
                out.println("Lỗi, hãy check vào ít nhất 1 checkbox");
            }                
        }
        // </editor-fold>

        // <editor-fold desc="4.Xóa tất cả giày khỏi giỏ hàng">
        if (request.getParameter("btXoaTatCa") != null){
            for (int j=0; j<gioHang.size(); j++){
                gioHang.remove(j); //Xóa giày j khỏi giỏ hàng.
            }
        }
        // </editor-fold>

        // <editor-fold desc="5.Tiếp tục mua hàng">
        if (request.getParameter("btTiepTucMuaHang") != null){
            //Nếu người dùng nhấn tiếp tục mua hàng
            //Chuyển đến trang danh sách sản phẩm
            String url = request.getContextPath()+"/client/danh-muc-giay.jsp";
            response.sendRedirect(url);
            return;
        }
        // </editor-fold>

        // <editor-fold desc="6.Lưu giỏ hàng">
        boolean kq = false;
        //Nếu chọn lưu giỏ hàng và số giày trong giỏ khác 0 thì mới lập đơn đặt hàng.
        if (request.getParameter("btLuuGioHang") != null && gioHang.size() != 0){
            KhachHangPOJO khachHang = (KhachHangPOJO)session.getAttribute("KhachHang");

            //Lưu đơn đặt hàng.
            DonDatHangPOJO ddh = new DonDatHangPOJO();
            Date d = new Date();
            ddh.setTenDangNhap(khachHang.getTenDangNhap());
            ddh.setNgayDatHang(new Timestamp(d.getTime()));
            ddh.setMaTinhTrang(1); //Tình trạng mới đặt hàng.
            //Thêm 1 đơn đặt hàng
            int maDonDatHang = DonDatHangDAO.themDonDatHang(ddh);

            //Lưu các chi tiết đơn đặt hàng.
            for (int i=0; i<gioHang.size(); i++){
                GiayPOJO giay = gioHang.get(i);
                int soThuTu = i + 1;
                ChiTietDonDatHangPOJO ct = new ChiTietDonDatHangPOJO();
                ct.setMaDonDatHang(maDonDatHang);
                ct.setSoThuThu(soThuTu);
                ct.setMaGiay(giay.getMaGiay());
                ct.setSoLuong(giay.getSoLuong());
                ct.setDonGia(giay.getGiaBan());
                kq = ChiTietDonDatHangDAO.themChiTietDonDatHang(ct);
                //out.println("Chi tiết thêm đơn đặt hàng: "+kq);
            }
            //Xóa giỏ hàng khỏi session.
            session.removeAttribute("GioHang");

            //Chuyển sang trang cho khách hàng xem đơn đặt hàng vừa đặt.       
            String url = request.getContextPath()+"/client/lich-su-mua-hang.jsp";
            response.sendRedirect(url);   

            //NGƯNG XỬ LÝ.
            return;                     
        }    
        // </editor-fold>

        //CHUYỂN ĐẾN TRANG XEM GIỎ HÀNG.           
        String url = request.getContextPath()+"/client/gio-hang.jsp";
        response.sendRedirect(url);             
        // </editor-fold>
        
%>
